package one.stand.service;

import one.stand.entity.websocket.CommodityInfoEntity;
import one.stand.model.ResultModel;
import one.stand.request.GoodSpecRequest;
import one.stand.request.GoodsAssembleRequest;
import one.stand.request.GoodsRequest;
import one.stand.request.GoodstypeRequest;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.Map;

/**
 * @author Administrator
 */
public interface GoodsService {

    /**
     * 根据公司ID查询产品分类（包含商品信息）
     */
    ResultModel selectGoodsTypeInfo(GoodstypeRequest request);

    /**
     * 根据公司ID查询产品分类（包含商品信息）PC端
     */
    ResultModel<Map<String, Object>> selectGoodsTypeInfoPC(GoodstypeRequest request);

    /**
     * 查询简单商品分类
     */
    ResultModel getGoodsTypeInfo(GoodstypeRequest request);

    /**
     * 添加/修改商品分类
     */
    ResultModel addGoodsType(GoodstypeRequest request);

    /**
     * 删除商品分类
     */
    ResultModel delGoodsType(GoodstypeRequest request);

    /**
     * 上移/下移商品分类
     */
    ResultModel moveGoodsType(GoodstypeRequest request);

    /**
     * 查询商品信息
     */
    ResultModel getGoodsInfo(GoodsRequest request);

    /**
     * 查询商品信息
     */
    ResultModel<Map<String, Object>> getGoodsInfoPC(GoodsRequest request);

    /**
     * 移动商品信息
     */
    ResultModel<Boolean> moveGoodsInfo(GoodsRequest request);

    /**
     * 添加/修改商品信息
     */
    ResultModel addGoodsInfo(GoodsRequest request);

    /**
     * 添加/修改商品信息
     */
    ResultModel addGoodsInfoList(GoodsRequest request);

    /**
     * 添加/修改商品规格信息
     */
    ResultModel addGoodSpecInfo(GoodSpecRequest request);

    /**
     * 转移产品
     */
    ResultModel transferGoods(GoodsRequest request);

    /**
     * 删除商品信息
     */
    ResultModel delGoodsInfo(GoodsRequest request);

    /**
     * 删除商品规格信息
     */
    ResultModel delGoodSpecInfo(GoodSpecRequest request);


    /**
     * 聊天获取商品信息
     *
     * @param specId
     * @return
     */
    ResultModel<CommodityInfoEntity> getSendMessage(Long specId);
}
